package com.wang.springbootinit.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wang.springbootinit.model.entity.Honor;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 荣誉数据访问层
 * 提供荣誉信息的数据库操作接口
 * 继承MyBatis-Plus的BaseMapper，获取基础的CRUD功能
 * 同时提供自定义的统计查询方法
 *
 * @author wang
 */
@Mapper
public interface HonorMapper extends BaseMapper<Honor> {
    
    /**
     * 统计各级别荣誉数量
     * 按级别统计已通过审核的荣誉数量
     * 使用动态SQL，支持针对特定学生或全部学生统计
     * 结果按数量降序排序
     *
     * @param studentId 学生ID（可选），为null时统计所有学生
     * @return 统计结果列表，包含级别和对应的数量
     */
    @Select("<script>" +
            "SELECT level, COUNT(*) as count FROM honor " +
            "WHERE status = 1 " +
            "<if test='studentId != null'>" +
            "AND student_id = #{studentId} " +
            "</if>" +
            "GROUP BY level " +
            "ORDER BY count DESC" +
            "</script>")
    List<Honor> getHonorStatistics(@Param("studentId") Long studentId);
    
    /**
     * 获取待审核的荣誉数量
     * 用于统计系统中待处理的荣誉申请数量
     * 可用于管理员仪表板显示或提醒
     *
     * @return 待审核的荣誉数量
     */
    @Select("SELECT COUNT(*) FROM honor WHERE status = 0")
    int getPendingHonorCount();
} 